本系列將介紹 Rails with Vue 的基本概念,並且以一個簡單的專案 Todo 來說明如何使用 Rails with Vue。我將透過這一系列的文章記錄我學習的過程,並且將我所學到的知識分享給大家。
Vue 也可以使用 v-on
來做事件處理,如下面的範例中,當按下按鈕時,會執行 reverseMessage
這個函式,並將 message
的值反轉。
<div id="app-5">
<p>{{ message }}</p>
<button v-on:click="reverseMessage">Reverse Message</button>
</div>
var app5 = new Vue({
el: '#app-5',
data: {
message: 'Hello Vue.js!'
},
methods: {
reverseMessage: function () {
this.message = this.message.split('').reverse().join('')
}
}
})
Bang! 看到沒有,網頁上的字樣已經改變了,這就是
Reactive
。
Vue 也可以使用 v-model
來做使用者輸入的處理,如下面的範例中,當使用者輸入文字時,會將輸入的文字顯示在網頁上。
<div id="app-6">
<p>{{ message }}</p>
<input v-model="message">
</div>
var app6 = new Vue({
el: '#app-6',
data: {
message: 'Hello Vue!'
}
})
v-model 會將輸入的值綁定到
data
中的message
,所以當輸入的值改變時,網頁上的文字也會跟著改變。
Vue 也可以使用 component
來做元件的處理,如下面的範例中,我們將 todo-item
這個元件放在 app
這個元件中,並且將 todo-item
的 todo
屬性設定為 app
的 groceryList
這個陣列元素,像這種方式我們稱之為 prop
。
<div id="app-7">
<ol>
<!--
Now we provide each todo-item with the todo object
it's representing, so that its content can be dynamic.
We also need to provide each component with a "key",
which will be explained later.
-->
<todo-item
v-for="item in groceryList"
v-bind:todo="item"
v-bind:key="item.id"
></todo-item>
</ol>
</div>
Vue.component('todo-item', {
props: ['todo'],
template: '<li>{{ todo.text }}</li>'
})
var app7 = new Vue({
el: '#app-7',
data: {
groceryList: [
{ id: 0, text: 'Vegetables' },
{ id: 1, text: 'Cheese' },
{ id: 2, text: 'Whatever else humans are supposed to eat' }
]
}
})
像這種元件組合的方式,我們稱之為
Component Composition
,往往在大型專案中會使用到,透過這種方式,我們可以將一個大的元件拆分成多個小的元件,並且透過這種方式來組合,這樣可以讓我們的專案更加的清楚,也更加的好維護,也稱作是Decoupling
。